le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
↳ QTRS
↳ Overlay + Local Confluence
le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
IF(false, x, y, z) → LOOP(x, double(y), s(z))
DOUBLE(s(x)) → DOUBLE(x)
IF(false, x, y, z) → DOUBLE(y)
LOOP(x, s(y), z) → LE(x, s(y))
LOG(s(x)) → LOOP(s(x), s(0), 0)
LE(s(x), s(y)) → LE(x, y)
LOOP(x, s(y), z) → IF(le(x, s(y)), x, s(y), z)
le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
IF(false, x, y, z) → LOOP(x, double(y), s(z))
DOUBLE(s(x)) → DOUBLE(x)
IF(false, x, y, z) → DOUBLE(y)
LOOP(x, s(y), z) → LE(x, s(y))
LOG(s(x)) → LOOP(s(x), s(0), 0)
LE(s(x), s(y)) → LE(x, y)
LOOP(x, s(y), z) → IF(le(x, s(y)), x, s(y), z)
le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
DOUBLE(s(x)) → DOUBLE(x)
le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
DOUBLE(s(x)) → DOUBLE(x)
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
DOUBLE(s(x)) → DOUBLE(x)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LE(s(x), s(y)) → LE(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
IF(false, x, y, z) → LOOP(x, double(y), s(z))
LOOP(x, s(y), z) → IF(le(x, s(y)), x, s(y), z)
le(s(x), 0) → false
le(0, y) → true
le(s(x), s(y)) → le(x, y)
double(0) → 0
double(s(x)) → s(s(double(x)))
log(0) → logError
log(s(x)) → loop(s(x), s(0), 0)
loop(x, s(y), z) → if(le(x, s(y)), x, s(y), z)
if(true, x, y, z) → z
if(false, x, y, z) → loop(x, double(y), s(z))
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
IF(false, x, y, z) → LOOP(x, double(y), s(z))
LOOP(x, s(y), z) → IF(le(x, s(y)), x, s(y), z)
double(0) → 0
double(s(x)) → s(s(double(x)))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
log(0)
log(s(x0))
loop(x0, s(x1), x2)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
IF(false, x, y, z) → LOOP(x, double(y), s(z))
LOOP(x, s(y), z) → IF(le(x, s(y)), x, s(y), z)
double(0) → 0
double(s(x)) → s(s(double(x)))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))
(1) (LOOP(x3, double(x4), s(x5))=LOOP(x6, s(x7), x8) ⇒ IF(false, x3, x4, x5)≥LOOP(x3, double(x4), s(x5)))
(2) (double(x4)=s(x7) ⇒ IF(false, x3, x4, x5)≥LOOP(x3, double(x4), s(x5)))
(3) (s(s(double(x18)))=s(x7)∧(∀x19,x20,x21:double(x18)=s(x19) ⇒ IF(false, x20, x18, x21)≥LOOP(x20, double(x18), s(x21))) ⇒ IF(false, x3, s(x18), x5)≥LOOP(x3, double(s(x18)), s(x5)))
(4) (IF(false, x3, s(x18), x5)≥LOOP(x3, double(s(x18)), s(x5)))
(5) (IF(le(x9, s(x10)), x9, s(x10), x11)=IF(false, x12, x13, x14) ⇒ LOOP(x9, s(x10), x11)≥IF(le(x9, s(x10)), x9, s(x10), x11))
(6) (s(x10)=x22∧le(x9, x22)=false ⇒ LOOP(x9, s(x10), x11)≥IF(le(x9, s(x10)), x9, s(x10), x11))
(7) (le(x24, x25)=false∧s(x10)=s(x25)∧(∀x26,x27:le(x24, x25)=false∧s(x26)=x25 ⇒ LOOP(x24, s(x26), x27)≥IF(le(x24, s(x26)), x24, s(x26), x27)) ⇒ LOOP(s(x24), s(x10), x11)≥IF(le(s(x24), s(x10)), s(x24), s(x10), x11))
(8) (false=false∧s(x10)=0 ⇒ LOOP(s(x28), s(x10), x11)≥IF(le(s(x28), s(x10)), s(x28), s(x10), x11))
(9) (le(x24, x25)=false ⇒ LOOP(s(x24), s(x25), x11)≥IF(le(s(x24), s(x25)), s(x24), s(x25), x11))
(10) (le(x30, x31)=false∧(∀x32:le(x30, x31)=false ⇒ LOOP(s(x30), s(x31), x32)≥IF(le(s(x30), s(x31)), s(x30), s(x31), x32)) ⇒ LOOP(s(s(x30)), s(s(x31)), x11)≥IF(le(s(s(x30)), s(s(x31))), s(s(x30)), s(s(x31)), x11))
(11) (false=false ⇒ LOOP(s(s(x33)), s(0), x11)≥IF(le(s(s(x33)), s(0)), s(s(x33)), s(0), x11))
(12) (LOOP(s(x30), s(x31), x11)≥IF(le(s(x30), s(x31)), s(x30), s(x31), x11) ⇒ LOOP(s(s(x30)), s(s(x31)), x11)≥IF(le(s(s(x30)), s(s(x31))), s(s(x30)), s(s(x31)), x11))
(13) (LOOP(s(s(x33)), s(0), x11)≥IF(le(s(s(x33)), s(0)), s(s(x33)), s(0), x11))
POL(0) = 0
POL(IF(x1, x2, x3, x4)) = -1 - x1 + x2 - x3
POL(LOOP(x1, x2, x3)) = -1 + x1 - x2
POL(c) = -5
POL(double(x1)) = 2·x1
POL(false) = 2
POL(le(x1, x2)) = 1
POL(s(x1)) = 2 + x1
POL(true) = 1
The following pairs are in Pbound:
LOOP(x, s(y), z) → IF(le(x, s(y)), x, s(y), z)
The following rules are usable:
LOOP(x, s(y), z) → IF(le(x, s(y)), x, s(y), z)
0 → double(0)
le(x, y) → le(s(x), s(y))
false → le(s(x), 0)
s(s(double(x))) → double(s(x))
true → le(0, y)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
IF(false, x, y, z) → LOOP(x, double(y), s(z))
double(0) → 0
double(s(x)) → s(s(double(x)))
le(0, y) → true
le(s(x), s(y)) → le(x, y)
le(s(x), 0) → false
le(s(x0), 0)
le(0, x0)
le(s(x0), s(x1))
double(0)
double(s(x0))